The storage of high resolution digital images within an electronic still camera system typically requires substantial memory. For a single sensor camera, a typical image with a resolution of 768 pixels per line.times.512 lines.times.10 bits per pixel would require 3,932,160 bits or, equivalently, 491,520 bytes of semiconductor memory storage space. If, for system requirements, each 10 bit pixel value must be stored in a 16 bit word of memory (wasting 6 bits per word), the required amount of memory to store the entire image increases to 786,432 bytes. If the data could be transformed in some reversible manner to require only 8 bits (1 byte) per pixel, without significantly degrading image quality, then only 393,216 bytes of memory are required for a 25% savings of storage memory.
Logarithm transforms have been used in the past to transform ten bit pixel values into eight bit pixel values. Typically one would use an expression such as Equation 1 to map 10 bit linear exposure data into 8 bit logarithmic exposure data. ##EQU1##
In Equation 1, "x" is the 10 bit linear exposure value, "y" is the corresponding 8 bit logarithmic value and "round( )" rounds the result to the nearest integer. Equation 1 can be inverted to produce Equation 2 for transforming a 8 bit logarithmic value to a ten bit linear exposure value. ##EQU2##
Although the presently known and utilized method for data transformation is satisfactory, it is not without drawbacks. One drawback of the above described logarithmic transforms is that the transform process is inefficient. For example, some of the 256 possible 8 bit logarithmic code values which can be produced to represent 10 bit linear code values by Equation 1 are not used. This is best illustrated by the following examples.
Consider the example where x=9 and x=10. The corresponding values for y using Equation 1 are y=85 and y=88. It is instructive to note that it is not possible to produce a value of y=86 or y=87 for an integer value x with Equation 1. Therefore, these values of y are not used in a system that implements Equation 1, and as previously stated, the result is that not all of the possible 8 bit code values are used.
The previous numerical example also illustrates another drawback. Recalling that x=9 produces y=85, produces a result in which eighty five 8 bit code values are used to represent the range of x=0 to x=9. Obviously, only 9 of these 8 bit values for y are used, resulting in the 74 missing 8 bit values. The reverse problem occurs for large values of x. Consider the example of x=969 and x=996. The corresponding values for Equation 1 are y=253 and y=254. Thus one 8 bit code value corresponds to a range of 27 10 bit code values.
Consequently, a need exists for a method and apparatus for the compression of imaging data in which the method and apparatus prevents the occurrence of missing 8 bit code values and minimizes the number of 10 bit code values represented by any given 8 bit code value.